// import MinPriorityQueue from '../../helper/MinPriorityQueue'
/**
 * @param {number} k
 * @param {number[]} arrival
 * @param {number[]} load
 * @return {number[]}
 */
export var busiestServers = function (k, arrival, load) {
  const rLen = arrival.length // 共有的请求个数
  const free = new Array(k).fill(0) // 记录各服务器什么时间开始有空
  const serverRequestCount = new Array(k).fill(0) // 记录每台服务器的请求个数
  // 遍历每个请求
  for (let i = 0; i < rLen; i++) {
    const time = arrival[i] // 请求的时间
    const duration = load[i] // 请求的时长
    // 查出该请求应该用哪台服务器
    let serverIndex = i % k
    // 从当前服务器开始查找是否有空闲服务器, 如果全部服务器都没有空闲, 则放充该请求
    let isFree = true
    while (time < free[serverIndex]) {
      if (serverIndex < k) serverIndex++
      if (serverIndex === k) serverIndex = 0
      if (serverIndex === i % k) {
        isFree = false
        break
      }
    }
    if (isFree) {
      // 如果空闲，则更新空闲时间
      free[serverIndex] = time + duration
      // 更新请求个数
      serverRequestCount[serverIndex]++
    }
  }
  // 找出最多请求的服务器
  let max = 0
  let ans = []
  for (let i = 0; i < k; i++) {
    const count = serverRequestCount[i]
    if (count > max) {
      ans = [i]
      max = count
    } else if (count === max) {
      ans.push(i)
    }
  }
  console.log(serverRequestCount)
  return ans
}
